package idv.arthur.jenkins;

import idv.arthur.structures.B1I1;
import idv.arthur.widgets.Widgets;

import java.util.ArrayList;

public class TriggerChainBuilding {

	public static void main(String[] args) {
		final Widgets wid = new Widgets();
		final String MODID = "MR_BL_DevOps";
		ArrayList<JobDepStruc> jds = new ArrayList<JobDepStruc>();	//儲存這次繳交有影響到的模組
		
		try {
			//產生屬於該模組的樹結構
			JobDepStruc jd2 = new JobDepStruc( MODID );
			jd2 = wid.buildTree(jd2);
			jd2.setUp(null);
			jds.add(jd2);
			
			ArrayList<B1I1> jds4Chk = new ArrayList<B1I1>();
			for(int i=0;i<jds.size();i++) {
				B1I1 jd4Chk = new B1I1();
				jd4Chk.setI1(i);
				jd4Chk.setB1(false);	//false代表沒有被包含，B1代表  isContained
				jds4Chk.add(jd4Chk);
			}
			for(int i=0;i<jds.size();i++) {
				for(int j=0;j<jds.size();j++) {
					if ( i!=j && !jds4Chk.get(j).isB1() ) {	//不用比對自己，而且若自己已證實被包含，也不用算了
						if( jds.get(i).isContain(jds.get(i), jds.get(j).getModId()) ){
							jds4Chk.get(j).setB1(true);
						}
					}
				}
			}
			//利用上面比對的結果，移除掉會被重覆部署的chain
			for(int i=0;i<jds4Chk.size();i++) {
				if( jds4Chk.get(i).isB1() ){
					jds.remove(i);
				}
			}
			for(int i=0;i<jds.size();i++) {	//jds包含了彼此不包含的模組
				final JobDepStruc jd = jds.get(i);
				wid.triggerJenkin(jd);
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		

	}

}
